Mobile devices connected to 3G networks are enabling new and diverse applications. One class of application consists of data sharing services, where data generated by a device (e.g., location updates, photos, video clips, and real-time feeds) is shared with other devices based on specific policies. These policies are usually based on the generated content; for example, a tourist backpacking through Europe with a smart phone may want to broadcast her location to friends who live nearby (e.g., location-sharing), receive messages that mention her name, share videos that her family wants to see, or even receive a feed from her home's security camera if it detects movement.
Currently, such services are structured as client-server applications within a cloud computing infrastructure. Cloud computing is Internet-based computing, whereby shared resources, software and information are provided to computers and other devices on-demand. The majority of cloud computing infrastructure comprises reliable services delivered through data centers and built on servers. Clouds often appear as single points of access for users' computing needs. Data generated by a device is uploaded via 3G to a central server which provides it selectively to other devices. The centralized approach allows data to be uploaded just once by a sender for multiple recipients, without requiring any of them to be online at the time. As an additional benefit, client-server applications do not require inbound connections into devices, allowing ISPs (Internet service providers) to provide greater security by blocking such connections.
However, the centralized approach can be inefficient if devices generate substantial data that few devices wish to receive. In the example of a location-sharing application, the device will continually upload its location to the cloud even if nobody lives nearby, wasting network resources and battery life in the process. Also, with respect to privacy, users expose the data to application servers and the third-party cloud providers hosting them, and potentially even to other customers of the same cloud. Since the centralized server of the cloud has to apply sharing policies on the data, simple encryption is not a viable solution.